var express = require('express')
var router = express.Router()
var User = require('../models/User')
var Content = require('../models/Content')

var responseData;
router.use(function(req,res,next){
    responseData = {
        code:0,
        message:''
    }
    next()
})


/**
 * 用户注册
 *   注册逻辑
 *   1、用户名不能为空
 *   2、密码不能为空
 *   3、两次输入的密码必须一致
 *   
 *   1、用户名是否已经注册
 *      数据库中查询，如果查到了，则不能再用这个用户名进行注册
 */
router.post('/user/register',function(req,res,next){
    // res.send('ADMIN - User')
    var username = req.body.username;
    var password = req.body.password;
    var repassword = req.body.repassword;

    // 用户名不能为空
    if(username == ''){
        responseData.code = 1;
        responseData.message = '用户名不能为空';
        res.json(responseData)
        return
    }
    // 密码不能为空
    if(password == ''){
        responseData.code = 1;
        responseData.message = '密码不能为空';
        res.json(responseData)
        return
    }
    // 两次密码必须一致
    if(password != repassword){
        responseData.code = 1;
        responseData.message = '两次输入的密码不一致';
        res.json(responseData)
        return
    }

    // 用户名是否已经被注册，如果数据库中已经存在和我们要注册的用户名同名的数据
    // 表示该用户已经被注册了
    User.findOne({
        username: username
    }).then(function(userinfo){
        if(userinfo){
            // 表示数据库中有该记录
            responseData.code = 4;
            responseData.message = '用户名已经被注册了';
            res.json(responseData)
            return
        }
        // 保存用户注册的信息到数据库中
        var user = new User({
            username: username,
            password: password
        });
        return user.save();
    }).then(function(newUserInfo){
        responseData.message = '注册成功';
    res.json(responseData)
    })
    
})

// 新增登录处理
router.post('/user/login',function(req,res){
    var username = req.body.username;
    var password = req.body.password;
    if(username == '' || password == ''){
        responseData.code = 1;
        responseData.message = '用户名或密码不能为空';
        res.json(responseData)
        return
    }

    // 查询数据库中相同用户名和密码的记录是否存在，
    // 如果存在则表示登录成功
    User.findOne({
        username: username,
        password: password
    }).then(function(userInfo){
        if(!userInfo){
            responseData.code = 2;
            responseData.message = '用户名或密码错误';
            res.json(responseData);
            return;
        }
        // 用户名和密码正确
        responseData.message = '登录成功';
        // 登录成功之后，返回用户信息
        responseData.userInfo = {
            _id: userInfo.id,
            username: userInfo.username
        }
        req.cookies.set('userInfo',JSON.stringify({
            _id: userInfo.id,
            username: userInfo.username
        }));
        res.json(responseData)
        return;
    })
})

/**
 * 退出登录
 */
router.get('/user/logout',function(req,res){
    req.cookies.set('userInfo',null)
    res.json(responseData)
    return;
})

/**
 * 获取指定文章的所有评论
 */
router.get('/comment',function(req,res){
    var contentId = req.query.contentid || '';

    Content.findOne({
        _id: contentId
    }).then(function(content){
        responseData.data = content.comments;
        res.json(responseData);
    })
})

/**
 * 评论提交
 */
router.post('/comment/post',function(req,res){
    // 内容的id
    var contentId = req.body.contentid || '';
    var postData = {
        username: req.userInfo.username,
        postTime: new Date(),
        content: req.body.content
    }
    // 查询当前这篇内容的信息,并将数据push到在contents.js中声明的contents数组中
    // 之后在通过save方法，保存到数据库中
    Content.findOne({
        _id: contentId
    }).then(function(content){
        content.comments.push(postData);
        return content.save();
    }).then(function(newContent){
        responseData.message = '评论成功';
        responseData.data = newContent;
        res.json(responseData);
    })
})

module.exports = router